<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
Utility Classes for coredef.
<br>
This package contains the usual EMF generated classes augmented with
Chain and Graph navigation utilities.
<ol>
<li>A <b>GraphWalker</b> is provided, it walks through the graph trying to find
all possible Chains starting from a given source and reaching a given destination
in this graph.
	<ul>
	<li>The walker caches a map of (Routes;Chains) it has gone through.</li>
	<li>The rules the walker uses for determining how to reach next possible
	nodes for a chain or whether it reached a final destination are determined
	by a <b>GraphWalkerPolicy</b> which is attached to the walker after it's
	creation.</li>
	</ul>
</li>
<li>A <b>ChainSequencer</b> is provided, it transforms a Set of Chains having
the same Route (representing a coherent Graph) into the sequenced series of
Nodes representing the "logic" described by this Graph.
	<ul>
	<li>...</li>
	<li>The rules the sequencer uses for determining how to merge and sequence
	nodes for a set of chains are determined by a <b>ChainSequencerPolicy</b>
	which is attached to the sequencer after it's creation.</li>
	<li>The sequencer will recursively handle the graph and it's Chains/subChains
	calling a walker on selected portions of Edges and Nodes.</li>
	</ul>
</li>
</ol>
When analyzing a Graph, the following recursive decomposition is applied :
<ol>
	<li>The Walker walks the graph to determine all paths for each route of interest
	<img alt="paths" src="Graal-Paths.JPG"></img>,</li>
	<li>the Graph sequencer can now begin it's work. The first is to analyze the graph : each route paths are used to build the relevant sub-graphs (red, green and pink).
	<br><img alt="paths" src="Graal-SubGraphs.JPG" align="middle"><br>
	When a minimal sub-Graph is found (i.e. one starting on one fork and ending on the first next Join : here the blue one), 
	it is directly sequencable by the policy. This sub-Graph is then replaced in all chains by the same DecomposableNode representing them.
	The process is repeated until the original graph is reduced to have one unique chain for each of it's routes.</li>
	<li>the reduced chains are then sequenced:
		<ul>
			<li>if the chain contains only one normal nodes, it is sequenced;</li>
			<li>if the chain contains a decomposable node, their sub-chains are sequenced (as defined by the policy)recursively.</li>
		</ul>
	</li>
</ol>
</body>
</html>